#ifndef __RGB_H__
#define __RGB_H__

#ifdef __cplusplus
extern "C" {
#endif

#include "main.h" // ?????HAL????
#include <stdint.h>

// ???? - ????????
#define WS2812B_TIMER_HANDLE   (&htim1)         // ????????
#define WS2812B_DMA_HANDLE     (hdma_tim1_ch1)  // ???DMA??
#define WS2812B_TIMER_CHANNEL  TIM_CHANNEL_1    // ????????
#define WS2812B_NUM_LEDS       30             // ???LED??

// LED?????
typedef struct {
    uint8_t g; // ??
    uint8_t r; // ??
    uint8_t b; // ??
} RGB_Color_t;

// ????
void WS2812B_Init(void);
void WS2812B_SetLEDColor(uint16_t led_idx, uint8_t r, uint8_t g, uint8_t b);
void WS2812B_SetLEDColorRGB(uint16_t led_idx, RGB_Color_t color);
void WS2812B_ClearAll(void);
void WS2812B_Update(void); // ???????
void WS2812B_TestPattern(void); // ????

// ??????,?????????????
extern RGB_Color_t LED_Buffer[WS2812B_NUM_LEDS];

#ifdef __cplusplus
}
#endif

#endif /* __WS2812B_H__ */
